#!/usr/bin/env python
# -*- coding: utf-8 -*-

# @Time     :2020/12/08
# @Author   :Changshu
# @File     :Exercise_551.py
# 551. 学生出勤记录 I
# 给定一个字符串来代表一个学生的出勤记录，这个记录仅包含以下三个字符：
#
# 'A' : Absent，缺勤
# 'L' : Late，迟到
# 'P' : Present，到场
# 如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
#
# 你需要根据这个学生的出勤记录判断他是否会被奖赏。

import re

class Solution:
	'''法一，暴力解，逐个遍历
	def checkRecord(self, s: str) -> bool:
		A,L,P=0,0,0
		i=0
		while i<len(s):
			c=s[i]
			if c=='L':
				t=0
				while i<len(s) and s[i]=='L':
					t+=1
					i+=1
				L=max(L,t)
			elif c=='A':
				A+=1
				i+=1
			else:
				i+=1
		if A>1 or L>2:
			return False
		return True
	'''

	'''法二：检查是否出现了LLL子串，但还是要遍历整个字符串，去寻找A的个数
	def checkRecord(self, s: str) -> bool:
		countA=0
		i=0
		while i<len(s) and countA<2:
			if s[i]=='A':
				countA+=1
			if i<len(s)-2 and s[i]=='L' and s[i+1]=='L' and s[i+2]=='L':
				return False
			i+=1
		return countA<2
	'''

	'''法三：正则表达式'''
	def checkRecord(self, s: str) -> bool:
		return not re.search(r'.*(A.*A|LLL).*',s)




if __name__ == '__main__':
	solution=Solution()
	s='PPALLL'
	print(solution.checkRecord(s))


